package com.zbkj.crmeb.front.request;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 商品表
 * </p>
 *
 * @author Mr.Zhang
 * @since 2020-05-06
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_store_product")
@ApiModel(value="StoreProduct对象", description="商品表")
public class IndexStoreProductSearchRequest implements Serializable {

    private static final long serialVersionUID=1L;

    @ApiModelProperty(value = "商户表名")
    private String tableNameMp;
    
    @ApiModelProperty(value = "商品条码（一维码）数组")
    private String barCode;
    
    private List<String> barCodeArr;

    @ApiModelProperty(value = "类型（1：出售中（已上架），2：仓库中（未上架），3：已售罄，4：警戒库存，5：回收站）")
    @NotNull
    @Min(value = 1, message = "类型不能小于1")
    @Max(value = 5, message = "类型不能大于5")
    private int type;

    @ApiModelProperty(value = "分类ID， 多个逗号分隔")
    private List<Integer> cateId;
    
    @ApiModelProperty(value = "分类ID， 多个逗号分隔")
    private List<String> cateIds;
    
    @ApiModelProperty(value = "过滤分类ID， 多个逗号分隔")
    private List<String> filterCateIds;

    @ApiModelProperty(value = "商品id")
    private Integer id;

    @ApiModelProperty(value = "商品id列表")
    private List<Integer> productIdList;

    @ApiModelProperty(value = "商品名称")
    private String storeName;
    
    @ApiModelProperty(value = "关键字搜索， 支持(商品名称, 商品简介, 关键字, 商品条码)")
    private String keywords;

    @ApiModelProperty(value = "是否小编推荐")
    private Boolean isBest = null;

    @ApiModelProperty(value = "是否热门")
    private Boolean isHot = null;

    @ApiModelProperty(value = "是否新品")
    private Boolean isNew = null;

    @ApiModelProperty(value = "是否优惠")
    private Boolean isBenefit = null;

    @ApiModelProperty(value = "价格排序", allowableValues = "range[asc,desc]")
    private String priceOrder;

    @ApiModelProperty(value = "销量排序", allowableValues = "range[asc,desc]")
    private String salesOrder;

    @ApiModelProperty(value = "发货地")
    private String stockArea;

    @ApiModelProperty(value = "品牌ID")
    private Integer brandId = null;

    @ApiModelProperty(value = "品牌IDs")
    private String brandIds;
    
    @ApiModelProperty(value = "是否易时尚商品")
    private Boolean merUse = null;

    @ApiModelProperty(value = "是否是意大利商品")
    private Boolean isEurope = null;

    @ApiModelProperty(value = "最低价")
    private BigDecimal minPrice ;

    @ApiModelProperty(value = "最高价")
    private BigDecimal maxPrice ;

    @ApiModelProperty(value = "尺码")
    private String attrs ;

    @ApiModelProperty(value = "多个尺码")
    private List<String> attrsList ;

    @ApiModelProperty(value = "发货地")
    private List stockAreaList ;

    @ApiModelProperty(value = "是否是意大利商品")
    private Integer isEuropeInt ;

    @ApiModelProperty(value = "是否易时尚商品")
    private Integer merUseInt ;

    @ApiModelProperty(value = "是否小编推荐")
    private Integer isBestInt ;

    @ApiModelProperty(value = "是否热门")
    private Integer isHotInt ;

    @ApiModelProperty(value = "是否新品")
    private Integer isNewInt ;

    @ApiModelProperty(value = "是否优惠")
    private Integer isBenefitInt ;

    @ApiModelProperty(value = "品牌IDs")
    private List<String> brandIdList;

    @ApiModelProperty(value = "自建供应商id")
    private Integer supplierId;

    @ApiModelProperty(value = "供应商列表字符串")
    private String suppliersIds;
    
    @ApiModelProperty(value = "供应商列表")
    private List<String> suppliersIdList;

    private String order;

    @ApiModelProperty(value = "关键字搜索， 支持(商品名称, 商品简介, 关键字, 商品条码)")
    private List<String> keywordList;

    @ApiModelProperty(value = "isShow")
    private Integer isShow;

    @ApiModelProperty(value = "merId")
    private Integer merId;
    
    @ApiModelProperty(value = "最低库存数")
    private Integer limitStock;

    private List<Integer> bestIds;
    private List<Integer> showIds;

    @ApiModelProperty(value = "发货地")
    private List<String> tempIdList;

    @ApiModelProperty(value = "最小折扣")
    @TableField(exist = false)
    private Double minDiscount;

    @ApiModelProperty(value = "最大折扣")
    @TableField(exist = false)
    private Double maxDiscount;

    @ApiModelProperty(value = "折扣排序", allowableValues = "range[asc,desc]")
    @TableField(exist = false)
    private String discountSort;

    @ApiModelProperty(value = "标准商品库IDs")
    private List<Integer> normIdList;

    @ApiModelProperty(value = "用户优惠券id")
    private Integer userCouponId;
    @ApiModelProperty(value = "优惠券商品IDS")
    private List<Integer> couponProductIds;
    @ApiModelProperty(value = "优惠券发货地IDS")
    private List<Integer> couponTempIds;
    @ApiModelProperty(value = "优惠券分类IDS")
    private List<String> couponCateIds;
    @ApiModelProperty(value = "优惠券品牌IDS")
    private List<Integer> couponBrandIds;
    @ApiModelProperty(value = "优惠券季节")
    private List<String> couponSeasons;

    @ApiModelProperty(value = "季节")
    private String season;

    @ApiModelProperty(value = "不可见分类id集合",hidden = true)
    private List<Integer> invisibleCateIds;

    @ApiModelProperty(value = "shopId")
    private Integer shopId ;

    @ApiModelProperty(value = "shopMerId")
    private Integer shopMerId ;

    @ApiModelProperty(value = "专区id")
    private Integer zoneId;

}
